ìdåπÇÃí«â¡
Power Manager 2.0 Ç…ÇÕÅAÉVÉXÉeÉÄÇ…ìdóÕÇãüããÇ∑ÇÈ
ACÅAÉoÉbÉeÉäÅAÇ‹ÇΩÇÕ UPS
ǻǫÇÃÅAÇ¢Ç≠ǬǩÇÃÉfÉoÉCÉXÇêßå‰ÇµÇƒÅAǪÇÍÇÁÇΔëäå›çÏópÇçsǧã@î\Ç™ópà”Ç≥ÇÍǃǢNjÇ∑ÅBDZÇÃÇΩÇfl
Power Manager
Ç…ÇÕÅAê⁄ë±Ç≥ÇÍǃǢÇÈÇ∑Ç◊ǃÇÃìdåπÇÃë∂ç›ÇΔÉXÉeÅ[É^ÉXÇí ímǵǃÅAì¡Ç…ÅAÉVÉXÉeÉÄÇ™ÉoÉbÉeÉäÇ‹ÇΩÇÕÉoÉbÉNÉAÉbÉvìdåπ
(UPS ǻǫ)
ÇÃÇ›Ç≈ìÆçÏǵǃǢÇÈǩǫǧǩǻǫÇÃêMóäÇ≈Ç´ÇÈèdóvèÓïÒÇÉÜÅ[ÉUÇ…íÒãüÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅB
Power Manager Ç≈ÇÕÅAìdåπÉfÅ[É^ç\ë¢ëÃ
(íPÇ…ÅuìdåπÅvÇΔLJåƒÇŒÇÍÇ‹Ç∑)
ÇâÓǵǃDZÇÍÇÁÇÃÉfÉoÉCÉXÇÃë∂ç›ÇîFéØÇµÇ‹Ç∑ÅB
ìdåπÉfÅ[É^ç\ë¢ëÃ
éüÇ…ÅAìdåπÇÃÉfÅ[É^ç\ë¢ëÃDžǬǢǃê‡ñæÇµÇ‹Ç∑ÅB
struct PowerSourceParamBlock
{
PowerSourceID sourceID; // Power Manager Ç…ÇÊǡǃäÑÇËìñǃÇÁÇÍÇΩÉÜÉjÅ[ÉNÇ» ID
UInt16 sourceCapacityUsage; // currentCapacity ÇÃégÇ¢ï˚
UInt32 sourceVersion; // kVersionOnePowerSource ÇégópÇ∑ÇÈ
OptionBits sourceAttr; // ëÆê´ (è⁄ç◊ÇÕå„èq)
OptionBits sourceFlags; // ÉtÉâÉO (è⁄ç◊ÇÕå„èq)
UInt32 currentCapacity; // É~ÉäÉèÉbÉgÇ‹ÇΩÇÕÉpÅ[ÉZÉìÉeÅ[ÉWÇ≈ï\ǵÇΩ
// åªç›ÇÃóeó
UInt32 maxCapacity; // É~ÉäÉèÉbÉgíPà Ç≈ï\ǵÇΩÉtÉãóeó
UInt32 timeRemaining; // É~ÉäÉèÉbÉgéûíPà Ç≈ï\ǵÇΩ
// äÆëSÇ»ìdóÕè¡ñ’Ç‹Ç≈Ç…écÇ≥ÇÍÇΩéûä‘
UInt32 timeToFullCharge; // É~ÉäÉèÉbÉgéûíPà Ç≈ï\ǵÇΩ
// è[ìdÇ…ïKóvÇ»éûä‘
UInt32 voltage; // É~ÉäÉ{ÉãÉgíPà ÇÃìdà≥
SInt32 current; // É~ÉäÉAÉìÉyÉAíPà ÇÃìdó¨
// (ìdóÕè¡îÔéûÇÕïâÇÃêîÇ≈ÅA
// è[ìdéûÇÕê≥ÇÃêî)
};
|
ìdåπÇ≈ÇÕÅAPower Manager Ç™ maxCapacity
ÉtÉBÅ[ÉãÉhÇäÓèÄÇΔǵǃÅAìdåπÇà currentCapacity
ÉtÉBÅ[ÉãÉhÇâéflÇ∑ÇÈï˚ñ@ÇéwíËÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
éüÇ…ÅAsourceCapacityUsage
íËêîÇÃíËã`Çé¶ÇµÇ‹Ç∑ÅB
Å@
enum
{
kCapacityIsActual = 0, // é¿ç€ÇÃíPà Ç≈ï\åªÇ≥ÇÍÇΩóeó
kCapacityIsPercentOfMax = 1 // maxCapacity ÉtÉBÅ[ÉãÉhÇÃÉpÅ[ÉZÉìÉeÅ[ÉWÇΔǵǃ
// ï\åªÇ≥ÇÍÇΩóeó
};
|
éüÇÃìdåπëÆê´ÉtÉâÉOÇégópÇ≈Ç´Ç‹Ç∑ÅB
enum
{
bSourceIsBattery = 0, // ìdåπÇÕÉoÉbÉeÉä
bSourceIsAC = 1, // ìdåπÇÕ AC
bSourceCanBeCharged = 2, // ìdåπÇÕè[ìdâ¬î\
bSourceIsUPS = 3 // ìdåπÇÕ UPS
};
|
éüÇÃìdåπÉXÉeÅ[É^ÉXÉtÉâÉOÇégópÇ≈Ç´Ç‹Ç∑ÅB
enum
{
bSourceIsAvailable = 0, // ìdåπÇÕÉCÉìÉXÉgÅ[ÉãÇ≥ÇÍǃǢÇÈ
bSourceIsCharging = 1, // ìdåπÇÕè[ìdíÜ
bChargerIsAttached = 2, // è[ìdäÌÇ™ê⁄ë±Ç≥ÇÍǃǢÇÈ
};
|
AddPowerSource
AddPowerSource ÇåƒÇ—èoÇ∑DZÇΔÇ≈ÅAPower Manager
Ç™äƒéãÇ∑ÇÈìdåπÇÃÉäÉXÉgÇ…êVǵǢìdåπÇí«â¡Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
pascal OSStatus AddPowerSource (PowerSourceParamBlock *
ioSource);
|
ÉNÉâÉCÉAÉìÉgÇÕÅADZÇÃìdåπÇÃä«óùÇ…égópÇ≈Ç´ÇÈÉÜÉjÅ[ÉNÇ»
PowerSourceID ÇéÛÇØéÊÇËÇ‹Ç∑ÅBioSource
ÇÕÅAìdåπÇãLèqÇ∑ÇÈèÓïÒÇä‹ÇÒÇæÉpÉâÉÅÅ[É^ÉuÉçÉbÉNÇ≈Ç∑ÅBPower
Manager
Ç≈ÇÕÅAìdåπÇÃì‡ïîÉäÉXÉgÇÃíÜDžDZÇÃèÓïÒÇÃÉçÅ[ÉJÉãÉRÉsÅ[Çï€éùǵNjÇ∑ÅB
RemovePowerSource
ÉfÉoÉCÉXÇÃìdåπÇLJÇÕÇ‚égópÇ≈Ç´Ç»Ç≠ǻǡÇΩèÍçáÇÕÅARemovePowerSource
ÇégǡǃÅAÉäÉXÉgÇ©ÇÁǪÇÃìdåπÇçÌèúÇ∑ÇÈÇÊǧDž Power Manager
Ç…éwé¶Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBDZÇÍÇ…ÇÊÇËÅAǪÇÃìdåπÇÕìdóÕÉTÉ}ÉäåvéZÇÃëŒè€äOÇ…Ç»ÇËÇ‹Ç∑ÅB
pascal OSStatus RemovePowerSource (PowerSourceID
inSourceID);
|
inSourceID ÇÕçÌèúÇ≥ÇÍÇÈìdåπÇà ID Ç≈Ç∑ÅBéwíËǵÇΩ
PowerSourceID ÇéùǬìdåπÇ™ Power Manager
ÇÃìdåπÉäÉXÉgÇÃíÜÇ≈åüèoÇ≈ǴǻǢèÍçáÅADZÇÃÉãÅ[É`ÉìÇÕ
kNoSuchPowerSource Çï‘ǵNjÇ∑ÅB
UpdatePowerSource
UpdatePowerSource
ÇåƒÇ—èoÇ∑DZÇΔÇ≈ÅAìdåπÇÃÉXÉeÅ[É^ÉXÇ…ä÷Ç∑ÇÈìùåvíl
(ìdóÕè¡îÔó ÅAécÇ≥ÇÍǃǢÇÈóeó ǻǫ)
ÇçXêVÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBìdåπèÓïÒÇéÊìæÇ∑ÇÈï˚ñ@ÇÕÅAǪÇÍǺÇÍÇÃÉ\ÉtÉgÉEÉFÉAÇ™ì‡ïîìIÇ…åàíËǵNjÇ∑ÅB
pascal OSStatus UpdatePowerSource (PowerSourceParamBlock *
ioSource);
|
ioSource Ç…ÇÕÅAìdåπÇ…äÑÇËìñǃÇÁÇÍǃǢÇÈ
PowerSourceID
Çä‹ÇflǃÅAçXêVÇ≥ÇÍÇÈDZÇΔÇ…Ç»ÇÈìdåπèÓïÒÇ™ä‹Ç‹ÇÍÇ‹Ç∑ÅBéwíËǵÇΩ
PowerSourceID ÇéùǬìdåπÇ™ Power Manager
ÇÃìdåπÉäÉXÉgÇÃíÜÇ≈åüèoÇ≈ǴǻǢèÍçáÅADZÇÃÉãÅ[É`ÉìÇÕ
kNoSuchPowerSource Çï‘ǵNjÇ∑ÅB
íPèÉÇ» UPS ìdåπÇÃÉTÉìÉvÉã
ÉÜÅ[ÉUÇ™ÅAPower Manager
ÇΔÉXÉeÅ[É^ÉXèÓïÒÇÃÇ‚ÇËéÊÇËÇ™Ç≈Ç´ÇÈ UPS
ÇÉVÉXÉeÉÄÇ…ê⁄ë±ÇµÇƒÇ¢ÇÈÇΔâºíËǵNjÇ∑ÅBUPS
ÉhÉâÉCÉoÉ\ÉtÉgÉEÉFÉAÇ≈ÇÕÅAǪÇÃë∂ç›Çé¶Ç∑ÇΩÇflÇ… Power Manager
Ç…ìdåπÇÃìoò^ÇçsÇÌÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB
static PowerSourceParamBlock mySource;
void RegisterUPSSource (void)
{
OSStatus status = noErr;
mySource.sourceCapacityUsage = kCapacityIsActual;
mySource.sourceAttr = (1<<bSourceIsUPS)
| (1<<bSourceIsAC)
| (1<<bSourceIsBattery);
// AC Ç®ÇÊÇ—ÉoÉbÉeÉäÇΔÇΔLJDž UPS Çìoò^Ç∑ÇÈï˚ñ@Ç…íçà”
mySource.sourceFlags = (1<<bSourceIsAvailable);
mySource.currentCapacity = myCurrentCapacityInMilliWatts;
mySource.maxCapacity = myMaxCapacityInMilliWatts;
mySource.timeRemaining = secondsLeftToDischarge;
mySource.timeToFullCharge = secondsToFullChargeIfCharging;
mySource.voltage = myVoltageInMilliVolts;
mySource.current = -1234;
// ìdóÕÇè¡îÔǵǃǢÇÈèÍçáÇÕïâÇÃêî
status = AddPowerSource (&mySource);
// ÉGÉâÅ[ÇèàóùÇ∑ÇÈ
}
|
AC ìdåπÇ™çÌèúÇ≥ÇÍÇΩÇΔÇ´ÅAUPS
ÇÕǪÇÃé¸ä˙ìIÇ»çXêVéûÇ…éüÇÃïœçXÇçsǡǃÅAÉXÉeÅ[É^ÉXÇçXêVÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
void UpdateUPSSource (void)
{
OSStatus status = noErr;
// çXêVÇ≥ÇÍÇΩÉfÅ[É^Çé˚èWÇ∑ÇÈ
if (NoACConnected())
// AC ëÆê´ÇçÌèúǵǃǢÇÈDZÇΔÇ…íçà”ÅBDZÇÍÇ…ÇÊÇËÅAPower Manager ÇÕÅA
// ì‡ïî AC Çñ≥éãǵÅAÉoÉbÉeÉäìdåπÇ™è¡ñ’ǵǃǢÇÈÇ©ÇÃÇÊǧDž
// ìÆçÏÇ∑ÇÈÇÊǧDžéwé¶Ç≥ÇÍÇÈ
mySource.sourceAttr &= ~(1<<bSourceIsAC);
mySource.currentCapacity = myCurrentCapacityInMilliWatts;
mySource.timeRemaining = secondsLeftToDischarge;
mySource.timeToFullCharge = secondsToFullChargeIfCharging;
mySource.voltage = myVoltageInMilliVolts;
mySource.current = -1234; // ìdóÕÇè¡îÔǵǃǢÇÈèÍçáÇÕïâÇÃêî
status = UpdatePowerSource (&mySource);
// ÉGÉâÅ[ÇèàóùÇ∑ÇÈ
}
|
UPS Ç™ AC ÇÃïsç›ÇéwíËÇ∑ÇÈÇΔÅAAC
ÇÃë∂ç›Ç…ä÷Ç∑ÇÈì‡ïîìIÇ»ì«Ç›çûÇ›ÉfÅ[É^Ç™ñ≥å¯Ç≈džÇÈDZÇΔÇ™ Power
Manager Ç…í ímÇ≥ÇÍÅAPower Manager
ÇÕdžÇΩǩLJÉoÉbÉeÉäÇ™è¡ñ’ǵǃǢÇÈÇ©ÇÃÇÊǧDžÉVÉXÉeÉÄÇéÊÇËàµÇ§ÇÊǧDžǻÇËÇ‹Ç∑ÅBǪÇÃåãâ ÅAìdóÕïsë´èÛë‘Ç…ä◊Ç¡ÇΩÉVÉXÉeÉÄÇ≈ÇÕÅAÉoÉbÉeÉäìdåπÇ™è¡ñ’ǵǃǢÇÈ
PowerBook
Ç≈çsÇÌÇÍÇÈÇÃÇΔìØÇ∂è»ìdóÕÉAÉNÉVÉáÉìÇ™é¿çsÇ≥ÇÍÅAÉVÉXÉeÉÄÇÕí·ìdóÕèÛë‘Ç…íuÇ©ÇÍÇÈDZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅBÉfÉBÅ[ÉvÉXÉäÅ[ÉvÇ™ÉTÉ|Å[ÉgÇ≥ÇÍǃǢÇÈèÍçáÇÕÅAÉVÉXÉeÉÄÇÉfÉBÅ[ÉvÉXÉäÅ[ÉvèÛë‘Ç…Ç∑ÇÈDZÇΔÇ™ééÇ›ÇÁÇÍÇ‹Ç∑ÅBǪÇÍÇ™ïsâ¬î\Ç»èÍçáÇÕÅAÉoÉbÉeÉäìdåπÇãüããǵǻǢǩǨÇË
(ÉfÉXÉNÉgÉbÉvÇÃèÍçáÇÃÇÊǧDž)ÅAÉVÉXÉeÉÄÇÕí èÌÇÃÉXÉäÅ[ÉvÇ…ì¸ÇËÅAÉVÉXÉeÉÄÇÃìdåπÇÕÉIÉtÇ…Ç»ÇËÇ‹Ç∑ÅBǻǮÅAìdóÕïsë´ÇÃèÛë‘Ç…Ç»ÇËÅAè»ìdóÕÉAÉNÉVÉáÉìÇ™äJénÇ≥ÇÍÇÈíºëOÇ…ÅAǪÇÃDZÇΔÇí ímÇ∑ÇÈ
Apple
ÉCÉxÉìÉgÇ™ÉAÉNÉeÉBÉuÇ»ÉvÉçÉZÉXÇ…ëóêMÇ≥ÇÍÇ‹Ç∑ÅBDZÇÍÇÁÇÃÉCÉxÉìÉgÇÃè⁄ç◊DžǬǢǃÇÕÅAå„èqÇÃÅuPower
Manager Apple ÉCÉxÉìÉgÅvÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅB
|